Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
With the advance of networking and data storage technologies, an increasingly large number of computing services are being provided to users or customers by cloud-based datacenters that can enable access to computing resources at various levels. Cloud-based service providers may provide individuals and organizations with a range of solutions for systems deployment and operation. Depending on customer needs, datacenter capabilities, and associated costs, services provid to customers may be defined by Service Level Agreements (SLAs) describing aspects such as server latency, storage limits or quotas, processing power, scalability factors, backup guarantees, uptime guarantees, resource usage reporting, and similar ones.
Load balancing involves distribution of processes based on their typical long term resource needs in order to balance power usage, hardware duty loads, resource load, and similar system resources. Typically, this is accomplished using coarse profiles of tasks that estimate parameters such as task duration, memory footprint, and processor need. These profiles, however, are just averages over a significant process lifespan and do not capture moment-by-moment dynamic needs and statistical methods may be used to try to assure that maximum needs can likely be met as well. This form of profiling may be suitable in scenarios like moving a virtual machine (VM), which may take about 8-16 seconds for even a moderate size VM so load balancing is not done frequently. This also means that if multiple co-located tasks have peak demand, or simply demand the same particular resources at the same time, service degradation can occur.
Datacenter tasks are more suitable for co-location if they are good “roommates.” Resource conflict can cause a significant impact among co-located programs as they make use of the same shared resources. This is especially relevant as more cores move to single servers so that tasks in different virtual machines run at the same time.